﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BDSim
{
    #region 卫星状态预报结构体
    public class SatPredictStatus
    {
        public EConstellationType SatType = EConstellationType.BD;

        public string satName;
        /// <summary>
        /// 卫星号--【用到】
        /// </summary>
        public int PRN;

        /// <summary>
        /// 可见状态--【用到】
        /// </summary>
        public bool Visible;

        /// <summary>
        /// 俯仰角--【用到】
        /// </summary>
        public double Elevation;

        /// <summary>
        /// 方位角--【用到】
        /// </summary>
        public double Azimuth;

        /// <summary>
        /// 卫星位置X--【用到】
        /// </summary>
        public double PosX;

        /// <summary>
        /// 卫星位置Y--【用到】
        /// </summary>
        public double PosY;

        /// <summary>
        /// 卫星位置Z--【用到】
        /// </summary>
        public double PosZ;

        /// <summary>
        /// I支路功率，单位0.1dBM
        /// </summary>
        public double IPower;

        /// <summary>
        /// Q支路功率，单位0.1dBM
        /// </summary>
        public double QPower;

        /// <summary>
        /// 卫星速度(ECEF)(m/s)
        /// </summary>
        public double SatVel;

        /// <summary>
        /// 卫星加速度(ECEF)(m/s/s)
        /// </summary>
        public double SatAcc;

        /// <summary>
        /// 卫星加加速度(ECEF)(m/s/s/s)
        /// </summary>
        public double SatJek;

        /// <summary>
        /// 载波相位(Rad)--【用到】
        /// </summary>
        public double Phase;

        /// <summary>
        /// 载波相位速度
        /// </summary>
        public double PhaseVel;

        /// <summary>
        /// 载波相位加速度
        /// </summary>
        public double PhaseAcc;

        /// <summary>
        /// 载波相位加加速度
        /// </summary>
        public double PhaseJek;

        /// <summary>
        /// 伪距(m)--【用到】
        /// </summary>
        public double PseudoRange;

        /// <summary>
        /// 显示屏幕坐标X--【用到】
        /// </summary>
        public int ScreenX;

        /// <summary>
        /// 显示屏幕坐标Y--【用到】
        /// </summary>
        public int ScreenY;

        public double VelX;
        public double VelY;
        public double VelZ;
        public double fSNR;//载噪比

        /// <summary>
        /// 北斗时
        /// </summary>
        public long BDT;
    }
    #endregion

    #region 模拟源频点信息列表
    public class UserToFreqInfo
    {
        public int UserId;      //用户ID
        public FreqID FreqId;      //频点ID
        public string FreqName; //频点名称
        public string SystemSat;//星座系统
    }
    #endregion

    public enum FreqID
    {
        ALL = 0,
        B1 = 1,
        B2 = 2,
        B3 = 3,
        L1 = 4,
        L2 = 5,
        L5 = 6,
        R1 = 7,
        R2 = 8
    }

    #region 精度因子结构体
    public class DOPValue
    {
        public double PDOP;//--【用到】
        public double HDOP;//--【用到】
        public double VDOP;//--【用到】
        public double GDOP;//--【用到】
        public double TDOP;//--【用到】
        public DOPValue()
        {
            PDOP = -1;
            HDOP = -1;
            VDOP = -1;
            GDOP = -1;
            TDOP = -1;
        }
    }
    #endregion
}
